<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 通过原型链，弊端就是，子类的实例对象使用的是同一个原型对象，所以内存共享，会互相干扰
        // function Person(name,age){
        //     this.name = name;
        //     this.age = age;
        // }

        // function Child(){
        //     this.type = 'child';
        // }

        // Child.prototype = new Person();
        // let c1 = new Child();

        // 2. 使用构造函数来进行继承(利用call改变this指向), 但是这种继承不能继承父类原型上面的方法
        // function Person(name,age){
        //     this.name = name;
        //     this.age = age;
        // }

        // function Child(){
        //     Person.call(this);
        //     this.type = 'child';
        // }

        // 3. 组合继承
        function Person(name, age) {
            this.name = name;
            this.age = age;
        }

        function Child() {
            Person.call(this);
            this.type = 'child';
        }
        Child.prototype = new Person();
        Child.prototype.constructor = Child;
    </script>
</body>

</html>